package portal.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import portal.excepcion.DAOExcepcion;
import portal.modelo.Juegos;
import portal.modelo.Ofertas;
import portal.util.ConexionBD;

public class OfertasDAO extends BaseDAO{

	public ArrayList<Ofertas> listarOfertas() {
		
		ArrayList<Ofertas> ofertasLista = new ArrayList<Ofertas>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		
		    try {
				String query = "SELECT idOferta, nombreOferta, descripcionOferta, fechaCaducidadOferta, fechaCreacionOferta, ubicacionOferta, descuentoOferta, estadoOferta, COUNT(idComentario) FROM Oferta O LEFT JOIN Comentario C ON C.Oferta_idOferta = O.idOferta GROUP BY idOferta;";
				con = ConexionBD.obtenerConexion();
				stmt = con.prepareStatement(query);
				
				
				rs = stmt.executeQuery();
				while (rs.next()) {
					
					Ofertas ofertas = new Ofertas(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), rs.getDouble(7), rs.getString(8), rs.getInt(9));
					ofertasLista.add(ofertas);
					
				}
			} catch (SQLException e) {
				System.err.println(e.getMessage());
				try {
					throw new DAOExcepcion(e.getMessage());
				} catch (DAOExcepcion e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			} finally {
				this.cerrarResultSet(rs);
				this.cerrarStatement(stmt);
				this.cerrarConexion(con);
			}
			return ofertasLista;
	}

	public Boolean insertarOferta(Ofertas a) throws DAOExcepcion {

		boolean status = Boolean.TRUE;
		String query = "INSERT INTO Oferta VALUES (null,?,?,?,?,?,?,'Activo')";
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, a.getNombreOferta());
			stmt.setString(2, a.getDescripcionOferta());
			stmt.setString(3, a.getFechaCaducidadOferta());
			stmt.setString(4, a.getFechaCreacionOferta());
			stmt.setString(5, a.getUbicacionOferta());
			stmt.setDouble(6, a.getDescuentoOferta());
			
			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("NO INSERTO");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		
		return status;
	}

}
